At 15:18 +0200 on 26/10/98, Thomas Good wrote:
> My point: when attempting to do a SELECT the table lock blocks even
> this activity. Is this a bleeding lock? Shouldn't a simple SELECT
> succeed? I dunno...but this is problematic as users are looking for
> info while the data entry person is doing her thing...ouch.
This lock is an exclusive lock. There is no other kind of lock in Postgres.
One may give up the LOCK at the beginning of the transaction. This would
mean that if a reader came and went before the deletion of the record, it
would succeed, because up to that point the transaction holds a shared lock
on the table. If a writer appeared, then it would fail, because it would
try to change the lock on the table from shared to exclusive, which it
can't do until all readers relinquished their locks.
This, however, creates a possibility that the deletion phase (and the
entire transaction) would fail, because the lock would fail to convert to
exclusive because other readers are still holding it.
Herouth